Copyright: ©1999 todd brooks


About SQL DbViewer

SQL DbViewer is a lightweight replacement/addition to the Microsoft SQL Server Enterprise Manager® that comes with Microsoft’s SQL Server 6.x.  DbViewer allows you to quickly and to easily view the properties of SQL Server Databases, Table, Indexes, Stored Procedures and Columns.  You can even run Transact SQL Queries against the server.  DbViewer also allows you to traverse a Table’s Foreign Key references, which allows for a better understanding of the database structure.

I am distributing this program as FREEWARE with the intent that it may help others WITHOUT any warranty or agreement of fitness, implied or otherwise.

If you make changes to the code, please notify me (Todd Brooks), so that I might incorporate your changes into a future release and give you credit.  If you would like to see changes or additions to the code or have problems running this program, feel free to email me at todd@nol.net and I will do my best to accommodate you.

Latest version of DbViewer can be found at http://www.nol.net/~todd/software/DbViewer

Source Code can be found at http://www.nol.net/~todd/software/source/DbViewer

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Microsoft, SQL Server Enterprise Manager and other trademarks are property of Microsoft Corp., Redmond, WA


Requirements

SQL DbViewer requires the Microsoft Data Access 2.0 (ADO) runtimes to be installed.  A setup package with the required files can be located on Microsoft’s website at the following address:

http://www.microsoft.com/data/mdac2.htm

Note to Windows 95 users:   Windows 95 users must install DCOM for Windows 95 before installing MDAC 2.0.

SQL DbViewer requires the Microsoft Visual Basic 6.0 runtime files be installed on the client machine before installation.  A setup package with the required files can be located on Microsoft’s FTP site at the following address: ftp://ftp.microsoft.com/Softlib/MSLFILES/VBRUN60.EXE

Source Code Modification/Compilation

To modify or compile the source code, you must have Microsoft Visual Basic 6.0 installed.  You will also need to have the windowless controls installed, also.  These are located on the Visual Basic CD under the TOOLS directory.  The OCX’s are installed during setup, but will need the design time controls installed for source modification and compilation.


DbViewer Interface

DbViewer is a Multiple Document Interface (MDI) application that will allow you to view multiple SQL Servers, databases and/or tables at the same time in separate windows.  Each child window allows you to view a server’s databases.  The tabs allow you to view different properties and objects of that database.

Db/Table Info Tab

SQL Statement Tab

SQL Result Tab

Store Procedure Tab

The Connection menu option allows for adding and removing new Profiles .

The Window menu option has an option for Always on Top.

This makes DbViewer the top-most window at all times no matter what other application has focus.  Selecting this option easily toggles this feature.  This is particularly helpful when programming.

Always On Top can be toggled by pressing Ctrl-T.


Db/Table Info Tab

The Db/Table Info Tab allows you to select a database and views its objects and properties.

Selecting a Database will fill the Table combo box with all the available Tables in that Database viewable by your login.  By selecting a Table, the Columns of that Table will be displayed in the grid and all Indexes will be displayed in the Index combo box.  Selecting a particular Index will fill the Columns combo box with all the Columns that make up that Index. The bold-faced fields in the grid denote the Primary Key columns for the Table.  All columns after these are sorted alphabetically.

If the Ident column has a Yes in it, that particular Column is an Identity column.

If the Nulls column has a Yes in it, that particular Column allows null values.

If there is a Table.Column entry in the Foreign Key column, you may double-click that entry and a new window will open with that particular Table selected.  This is a quick and easy way to traverse the references in a Database.

Double-clicking a cell in the Field Name column will add that field to the current cursor position on the SQL Statement tab.  This makes it easy to start a T-SQL Query without a lot of typing!

Please Note:  The DataType column will return the byte length of char and varchar fields on SQL Server.  Since SQL Server version 7.0 supports UNICODE, note that the sizes will double since characters in UNICODE take 2 bytes instead of the ANSI 1 byte per character.


SQL Statement Tab

The SQL Statement Tab allows a Transact SQL Query to be executed against the opened SQL Server database.

Pressing the Execute button (or Ctrl-E as in Microsoft’s isql-w.exe) will cause the Query to execute.

Pressing the Clear button will erase the SQL Statement window.

The Query History stores past queries that have successfully been executed.  The number of queries the program tracks is an option on the Login Properties dialog.

Entering a number in the Max Rows Returned text box will force the Query to only return the selected number of rows.  A zero (0) is the default and will allow the Query to return all records matching the Query.

Entering a number in the Connection Timeout text box will force the Query to abort after the selected number of seconds.  This is particularly useful on dial-up connections to a SQL Server as to prevent the application from stalling while waiting for a large recordset to be returned.  The default is 15 seconds.

Both of the above values can be set as defaults in the Login Profile dialog.


SQL Result Tab

The SQL Result Tab places the recordset returned by the SQL Query into a grid for easier viewing.

The number of records returned by the Query are displayed in the lower left hand corner of the window with the current record number that the cursor has selected in the lower right hand corner.


Stored Procedure Tab

The Stored Procedure Tab allows you to select a Stored Procedure for the selected Database and view its Transact SQL code.  You cannot modify the code, but you are able to copy to the code to the Windows clipboard.


Login Properties
Login Properties and Profiles

The Login Properties dialog allows you to select a specific SQL Server and database to connect to.

For future use, you are able to save these settings to a particular Profile that will be saved in the Registry.

Note: The password that is saved will not be encrypted when it is saved to the Registry.  If someone has access to your registry, then they have the potential to view the password that you have saved.

Place the name of the database server in the Server text box.  Do not use IP Addresses!

Place the name of the database you wish to default to when opening up the database.  If you leave this blank, the application will default to the master database.

Connection Timeout is the amount of seconds that the application will wait for a response from the SQL Server before aborting.

Maximum Rows Returned is the maximum number of records the SQL Query will return.  This can prevent one from accidentally executing a SELECT * FROM… over a slow network or Internet connection and stalling the application.

Maximum Queries to Store is the maximum number of T-SQL Queries to store in memory to rerun.  This feature is functionally similar to the Most Recently Used (MRU) List.

Display System Tables allows you to toggle between showing the SQL Server system tables in your Table list.  This is useful for blocking out unnecessary items in the Table list.

Note:  Leaving the Username and Password to blank will cause the client to attempt a Trusted Connection.


Known Issues

The only known issue:

When switching tabs in the program, the program will give focus to the text box on the child form (for example, the SQL Statement entry box).  If the standard edit box was used from Visual Basic, even if Form KeyPreview is TRUE, the text box steals the CTRL-Tab keystroke and won’t pass it to the form.  This prevents the tabs from switching after this tab has been hit.  Using the windowless edit box, the desired behavior occurs and no keystrokes are stolen.  Unfortunately, the windowless edit box doesn’t process the Microsoft IntelliMouse mouse wheel messages properly and the mouse wheel doesn’t work with these edit boxes, either.

If you find any issues, please feel free to contact me, Todd Brooks (todd@nol.net), and let me know.  I will do my best to resolve the issue or provide a workaround as time permits.


GNU_License
GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.

59 Temple Place - Suite 330, Boston, MA  02111-1307, USA

Preamble

The licenses for most software are designed to take away your freedom to share

and change it. By contrast, the GNU General Public License is intended to

guarantee your freedom to share and change free software--to make sure the

software is free for all its users. This General Public License applies to most

of the Free Software Foundation's software and to any other program whose

authors commit to using it. (Some other Free Software Foundation software is

covered by the GNU Library General Public License instead.) You can apply it to

your programs, too.

When we speak of free software, we are referring to freedom, not price. Our

General Public Licenses are designed to make sure that you have the freedom to

distribute copies of free software (and charge for this service if you wish),

that you receive source code or can get it if you want it, that you can change

the software or use pieces of it in new free programs; and that you know you can

do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny

you these rights or to ask you to surrender the rights. These restrictions

translate to certain responsibilities for you if you distribute copies of the

software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a

fee, you must give the recipients all the rights that you have. You must make

sure that they, too, receive or can get the source code. And you must show them

these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer

you this license which gives you legal permission to copy, distribute and/or

modify the software.

Also, for each author's protection and ours, we want to make certain that

everyone understands that there is no warranty for this free software. If the

software is modified by someone else and passed on, we want its recipients to

know that what they have is not the original, so that any problems introduced by

others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish

to avoid the danger that redistributors of a free program will individually

obtain patent licenses, in effect making the program proprietary. To prevent

this, we have made it clear that any patent must be licensed for everyone's free

use or not licensed at all.

The precise terms and conditions for copying, distribution and modification

follow.

Terms and Conditions for Copying, Distribution and Modification

0. This License applies to any program or other work which contains a notice

placed by the copyright holder saying it may be distributed under the terms of

this General Public License. The "Program", below, refers to any such program or

work, and a "work based on the Program" means either the Program or any

derivative work under copyright law: that is to say, a work containing the

Program or a portion of it, either verbatim or with modifications and/or

translated into another language. (Hereinafter, translation is included without

limitation in the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not covered by

this License; they are outside its scope. The act of running the Program is not

restricted, and the output from the Program is covered only if its contents

constitute a work based on the Program (independent of having been made by

running the Program). Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source code as

you receive it, in any medium, provided that you conspicuously and appropriately

publish on each copy an appropriate copyright notice and disclaimer of warranty;

keep intact all the notices that refer to this License and to the absence of any

warranty; and give any other recipients of the Program a copy of this License

along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at

your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus

forming a work based on the Program, and copy and distribute such modifications

or work under the terms of Section 1 above, provided that you also meet all of

these conditions:

    a) You must cause the modified files to carry prominent notices stating that

    you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in whole or

    in part contains or is derived from the Program or any part thereof, to be

    licensed as a whole at no charge to all third parties under the terms of

    this License.

    c) If the modified program normally reads commands interactively when run,

    you must cause it, when started running for such interactive use in the most

    ordinary way, to print or display an announcement including an appropriate

    copyright notice and a notice that there is no warranty (or else, saying

    that you provide a warranty) and that users may redistribute the program

    under these conditions, and telling the user how to view a copy of this

    License. (Exception: if the Program itself is interactive but does not

    normally print such an announcement, your work based on the Program is not

    required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable

sections of that work are not derived from the Program, and can be reasonably

considered independent and separate works in themselves, then this License, and

its terms, do not apply to those sections when you distribute them as separate

works. But when you distribute the same sections as part of a whole which is a

work based on the Program, the distribution of the whole must be on the terms of

this License, whose permissions for other licensees extend to the entire whole,

and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your

rights to work written entirely by you; rather, the intent is to exercise the

right to control the distribution of derivative or collective works based on the

Program.

In addition, mere aggregation of another work not based on the Program with the

Program (or with a work based on the Program) on a volume of a storage or

distribution medium does not bring the other work under the scope of this

License.

3. You may copy and distribute the Program (or a work based on it, under Section

2) in object code or executable form under the terms of Sections 1 and 2 above

provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable source

    code, which must be distributed under the terms of Sections 1 and 2 above on

    a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three years, to

    give any third party, for a charge no more than your cost of physically

    performing source distribution, a complete machine-readable copy of the

    corresponding source code, to be distributed under the terms of Sections 1

    and 2 above on a medium customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer to

    distribute corresponding source code. (This alternative is allowed only for

    noncommercial distribution and only if you received the program in object

    code or executable form with such an offer, in accord with Subsection b

    above.)

The source code for a work means the preferred form of the work for making

modifications to it. For an executable work, complete source code means all the

source code for all modules it contains, plus any associated interface

definition files, plus the scripts used to control compilation and installation

of the executable. However, as a special exception, the source code distributed

need not include anything that is normally distributed (in either source or

binary form) with the major components (compiler, kernel, and so on) of the

operating system on which the executable runs, unless that component itself

accompanies the executable.

If distribution of executable or object code is made by offering access to copy

from a designated place, then offering equivalent access to copy the source code

from the same place counts as distribution of the source code, even though third

parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as

expressly provided under this License. Any attempt otherwise to copy, modify,

sublicense or distribute the Program is void, and will automatically terminate

your rights under this License. However, parties who have received copies, or

rights, from you under this License will not have their licenses terminated so

long as such parties remain in full compliance.

5. You are not required to accept this License, since you have not signed it.

However, nothing else grants you permission to modify or distribute the Program

or its derivative works. These actions are prohibited by law if you do not

accept this License. Therefore, by modifying or distributing the Program (or any

work based on the Program), you indicate your acceptance of this License to do

so, and all its terms and conditions for copying, distributing or modifying the

Program or works based on it.

6. Each time you redistribute the Program (or any work based on the Program),

the recipient automatically receives a license from the original licensor to

copy, distribute or modify the Program subject to these terms and conditions.

You may not impose any further restrictions on the recipients' exercise of the

rights granted herein. You are not responsible for enforcing compliance by third

parties to this License.

7. If, as a consequence of a court judgment or allegation of patent infringement

or for any other reason (not limited to patent issues), conditions are imposed

on you (whether by court order, agreement or otherwise) that contradict the

conditions of this License, they do not excuse you from the conditions of this

License. If you cannot distribute so as to satisfy simultaneously your

obligations under this License and any other pertinent obligations, then as a

consequence you may not distribute the Program at all. For example, if a patent

license would not permit royalty-free redistribution of the Program by all those

who receive copies directly or indirectly through you, then the only way you

could satisfy both it and this License would be to refrain entirely from

distribution of the Program.

If any portion of this section is held invalid or unenforceable under any

particular circumstance, the balance of the section is intended to apply and the

section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or

other property right claims or to contest validity of any such claims; this

section has the sole purpose of protecting the integrity of the free software

distribution system, which is implemented by public license practices. Many

people have made generous contributions to the wide range of software

distributed through that system in reliance on consistent application of that

system; it is up to the author/donor to decide if he or she is willing to

distribute software through any other system and a licensee cannot impose that

choice.

This section is intended to make thoroughly clear what is believed to be a

consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain

countries either by patents or by copyrighted interfaces, the original copyright

holder who places the Program under this License may add an explicit

geographical distribution limitation excluding those countries, so that

distribution is permitted only in or among countries not thus excluded. In such

case, this License incorporates the limitation as if written in the body of this

License.

9. The Free Software Foundation may publish revised and/or new versions of the

General Public License from time to time. Such new versions will be similar in

spirit to the present version, but may differ in detail to address new problems

or concerns.

Each version is given a distinguishing version number. If the Program specifies

a version number of this License which applies to it and "any later version",

you have the option of following the terms and conditions either of that version

or of any later version published by the Free Software Foundation. If the

Program does not specify a version number of this License, you may choose any

version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs

whose distribution conditions are different, write to the author to ask for

permission. For software which is copyrighted by the Free Software Foundation,

write to the Free Software Foundation; we sometimes make exceptions for this.

Our decision will be guided by the two goals of preserving the free status of

all derivatives of our free software and of promoting the sharing and reuse of

software generally.

No Warranty

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE

PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED

IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS

IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT

NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A

PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE

PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF

ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL

ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE

PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,

SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY

TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING

RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF

THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER

PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS


Enter a distinct Profile Name.


Closes this dialog and saves the Profile name you selected.


Closes this dialog without saving any changes you have made.


Exits the About dialog.


(c) 1998 todd brooks


Saved Profiles.


Enter the name of the SQL Server.  IP Addresses will not work.


Enter the default Database to log into.  Leave blank to use the master Database.


Enter your Username for the selected SQL Server.


Enter your Password for the selected SQL Server


Click this button to log into the selected SQL Server.


Click this button to close the Profile dialog.


Click this button to save this Profile.


Click this button to delete the selected Profile.


Enter the maximum number of seconds the SQL Query will take to return records before canceling the request.


Enter the maximum number of rows the SQL Query is to return


Enter the maximum number of T-SQL queries to store for this Profile.


Select to display SQL Server system tables in the Table list.


Choose an Index from the selected Table.


List of Columns comprising the selected Index.


Choose an Index from the selected Table.


List of Columns comprising the selected Index.


Choose a Table from the selected Database.


Displays a list of all Databases available to your Login on this SQL Server.


Choose a Table from the selected Database.


Displays a list of all Databases available to your Login on this SQL Server.


Enter a Transact SQL Query to execute.


Enter a Transact SQL Query to execute.


Click this button to execute the Transact SQL Query.


Click this button to clear the current Transact SQL Query.


Results of the Transact SQL Query.


The Transact-SQL for the selected Stored Procedure.


Choose a Stored Procedure from the selected Table to view its T-SQL.


Choose a Stored Procedure from the selected Table to view its T-SQL.


Selected Table design properties.


Enter the maximum number of rows the SQL Query is to return.


Enter the maximum number of seconds the SQL Query will take to return records before canceling the request.


Enter the maximum number of seconds the SQL Query will take to return records before canceling the request.


Choose a query that has been successfully executed previously.